package main

import "fmt"

func main() {
	// & 取地址
	// * 根据地址取值
	n := 18
	fmt.Println(&n) // 0xc00000a098
	p := &n
	fmt.Printf("%T\n", p) // *int
	m := *p
	fmt.Println(m) // 18

	var a *int // nil
	fmt.Println(a)
	//*a = 100   // 因为a是没有初始化的,是nil,所以没有内存地址
	// 使用new()函数申请内存地址,很少用,一般给基本数据类型申请,比如string、int等等
	var a2 = new(int)
	*a2 = 100
	fmt.Println(*a2)	// 100
	// 使用make()函数申请内存地址,只能给slice、map、chan 这三种类型分配地址

}
